"""
给定两个非空链表来表示两个非负整数。位数按照逆序方式存储，它们的每个节点只存储单个数字。将两数相加返回一个新的链表。

你可以假设除了数字 0 之外，这两个数字都不会以零开头。

示例：

输入：(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出：7 -> 0 -> 8
原因：342 + 465 = 807

"""


class Solution:
    def addTwoNumbers(self, list1, list2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        # list1 = [2, 4, 3]
        # list2 = [5, 6, 4]
        list3 = []
        plus = 0
        m = max(len(list1), len(list2))
        if m == len(list1):
            for i in range(m - len(list2)):
                list2.append(0)
        else:
            for i in range(m - len(list1)):
                list1.append(0)
        for i in range(m):
            list3.append((list1[i] + list2[i] + plus) % 10)
            plus = (list1[i] + list2[i] + plus) // 10
            if i == m - 1 and plus == 1:
                list3.append(1)
        return list3


list1 = [2, 4, 3, 9, 9, 9]
list2 = [5, 6, 9]

s = Solution()
print(s.addTwoNumbers(list1, list2))
